# 导包（把接口对象层封装的接口类导入进来）
from api.add_cart import add_cartAPI
from api.litemall_login import LiteLogin
# 创建测试类
class Test_add_cart:
    TOKEN = None
    # 前置处理(将第一步导入进来的接口类实例化为一个对象，将登录产生的token保存为一个类属性)
    def setup_method(self):
        self.cart_api = add_cartAPI() #注意小括号不要忘了
        self.login_api = LiteLogin() #将登录的接口类实例化为一个对象
        # 通过登录对象调用login方法，拿到完整的登录响应结果，并保存到一个叫resp_l的变量中
        resp_l =self.login_api.login(test_data={"username":"user123",
                                                "password":"user123"})
        Test_add_cart.TOKEN = resp_l.json().get("data")["token"]

    # 后置处理
    def teardown_method(self):
        pass
    # 编写测试用例方法
    # 加入购物车成功
    def test01_success(self):
        cart_thing = {"goodsId":1181000,"number":1,"productId":2}
        # 通过实例化的购物车对象，调用加入购物车方法，拿到加购接口的完整响应结果，并且存入resp_a
        resp_a = self.cart_api.add_cart(token=Test_add_cart.TOKEN,
                               test_data=cart_thing)
        # 加入断言判断返回结果是否符合预期
        # 断言状态码是否为200
        assert 200 == resp_a.status_code
        # 断言errmsg的值是否为“成功”
        assert "成功" == resp_a.json().get("errmsg")

    # 加购失败（没有商品id）
    def test02_without_goodsID(self):
        cart_thing = {"goodsId": "", "number": 1, "productId": 2}
        # 通过实例化的购物车对象，调用加入购物车方法，拿到加购接口的完整响应结果，并且存入resp_a
        resp_a = self.cart_api.add_cart(token=Test_add_cart.TOKEN,
                                        test_data=cart_thing)
        # 加入断言判断返回结果是否符合预期
        # 断言状态码是否为200
        assert 200 == resp_a.status_code
        # 断言errmsg的值是否为“成功”
        assert "参数不对" == resp_a.json().get("errmsg")
    # 加购失败（没有商品数量）
    def test03_without_goodsno(self):
        cart_thing = {"goodsId": 1181000, "number":"", "productId": 2}
        # 通过实例化的购物车对象，调用加入购物车方法，拿到加购接口的完整响应结果，并且存入resp_a
        resp_a = self.cart_api.add_cart(token=Test_add_cart.TOKEN,
                                        test_data=cart_thing)
        # 加入断言判断返回结果是否符合预期
        # 断言状态码是否为200
        assert 200 == resp_a.status_code
        # 断言errmsg的值是否为“成功”
        assert "系统内部错误" == resp_a.json().get("errmsg")